//赎金信--------383
// 给你两个字符串：ransomNote 和 magazine ，判断 ransomNote 能不能由 magazine 里面的字符构成。
// 如果可以，返回 true ；否则返回 false 。
// magazine 中的每个字符只能在 ransomNote 中使用一次。

#include <stdio.h>
#include <string.h>
#include <stdbool.h>

bool canConstruct(char* ransomNote, char* magazine) 
{
    int n1 = strlen(ransomNote);
    int n2 = strlen(magazine);
    int test[26] = {0};
    for(int i = 0; i < n1; i++)
    {
        test[ransomNote[i] - 'a']++;
    }
    for(int i = 0; i < n2; i++)
    {
        test[magazine[i] - 'a']--;
    }
    for(int i = 0; i < 26; i++)
    {
        if(test[i] >= 1)
            return false;   
    }
    return true;
}

int main()
{
    char *s1 = "abb";
    char *s2 = "babcb";
    if(canConstruct(s1,s2) == 1)
    {
        printf("%s 可以由 %s组成\n",s1,s2);
    }
    else
    {
        printf("%s 不可以由 %s组成\n",s1,s2);
    }
    return 0;
}